package com.jewelry.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.transaction.annotation.Transactional;

import com.jewelry.dao.ITemplateDAO;
import com.jewelry.service.ITemplateAttrService;
import com.jewelry.service.ITemplateService;
import com.jewelry.vo.StatisticsVO;
import com.jewelry.vo.TemplateAttrVO;
import com.jewelry.vo.TemplateVO;

public class TemplateServiceImpl implements ITemplateService {

	private ITemplateDAO  templateDAO;
	
	private ITemplateAttrService templateAttrService;

	public ITemplateAttrService getTemplateAttrService() {
		return templateAttrService;
	}

	public void setTemplateAttrService(ITemplateAttrService templateAttrService) {
		this.templateAttrService = templateAttrService;
	}

	public ITemplateDAO getTemplateDAO() {
		return templateDAO;
	}

	public void setTemplateDAO(ITemplateDAO templateDAO) {
		this.templateDAO = templateDAO;
	}
	
	//=====================================================
	
	public List<StatisticsVO> getGroupByType(){
		return templateDAO.getGroupByType();
	}

	@Override
	public List<TemplateVO> getTemplateListByPage(TemplateVO templateVO) {
		int totalCount = templateDAO.getTemplateCount(templateVO);
		templateVO.getPage().setTotalItem(totalCount);
		List<TemplateVO> list = templateDAO.getTemplateListByPage(templateVO);
		return list;
	}

	@Override
	public int geteTemplateCount(TemplateVO templateVO) {
		return templateDAO.getTemplateCount(templateVO);
	}

	@Override
	public void addTemplate(TemplateVO templateVO) {
		templateDAO.addTemplate(templateVO);
	}

	@Override
	@Transactional(rollbackFor=Exception.class)
	public void addTemplateAndAttr(TemplateVO template,Map<String,String[]> templateAttrMap) {
		addTemplate(template);
		List<TemplateAttrVO> templateAttrVOs = templateAttrService.getTemplateAttrFromParameter(templateAttrMap,"attr.",template.getTemplateid());
		for(TemplateAttrVO tempAttr:templateAttrVOs){
			templateAttrService.addTemplateAttr(tempAttr);
		}
	}

	//支持通配符
	@Override
	public List<TemplateVO> getTemplateList(TemplateVO template) {
		String newCode = template.getNewCode();
		if(newCode!=null && newCode.trim().length() !=0){
			newCode = '%'+newCode+'%';
			template.setNewCode(newCode);
		}
		
		String templateName = template.getTemplateName();
		if(templateName!=null && templateName.trim().length() !=0){
			templateName = '%'+templateName+'%';
			template.setTemplateName(templateName);
		}
		
		return templateDAO.getTemplateList(template);
	}
	
}
